package com.camartsApp.service;

import com.camartsApp.common.ResultVO;
import com.camartsApp.entity.Photo;
import com.camartsApp.common.PhotoUserVO;
import java.util.List;
import java.util.concurrent.CompletableFuture;

public interface PhotoService {
    /**
     * 获取所有用户最新上传的照片列表
     * @return 按上传时间倒序排列的照片列表
     */
    List<Photo> getLatestPhotos();
    /**
     * 带缓存的异步获取最新照片
     * @return 异步照片列表
     */

    CompletableFuture<List<Photo>> getCachedLatestPhotosAsync();
    /**
     * 异步获取最新照片（新增接口）
     */
    CompletableFuture<List<Photo>> getLatestPhotosAsync(); // 添加这行
    /**
     * 根据ID查询照片详细信息
     * @param id 照片ID
     * @return 照片详细信息
     */
    Photo getPhotoById(String id);

    /**
     * 根据照片ID获取关联的用户信息
     * @param photoId 照片ID
     * @return 用户信息
     */
    PhotoUserVO getPhotoUser(String photoId);
    /**
     * 获取点赞数最高的照片列表
     * @return 照片列表
     */
    List<Photo> getGreatestPhotos();

    /**
     *
     * @param currentUserId 当前用户id
     * @param targetPhotoId 目标帖子id
     * @return 封装了boolean的ResultVO
     */
    ResultVO checkIsLiked(Long currentUserId, Long targetPhotoId);

    /**
     *
     * @param currentUserId 当前用户id
     * @param targetPhotoId 目标帖子id
     * @return ResultVO
     */
    ResultVO like(Long currentUserId, Long targetPhotoId);

    /**
     *
     * @param currentUserId 当前用户id
     * @param targetPhotoId 目标帖子id
     * @return ResultVO
     */
    ResultVO dislike(Long currentUserId, Long targetPhotoId);

}